package framework.account;

import framework.customer.ICustomer;
import framework.observer.BaseObserver;

/**
 * @author  Eddie
 */
public interface IAccount {
	
	public String getType();
	
	public String getAccountNo();
	
	public String getExpDate();
	
	public float getBalance();
	
    public void updateBalance(float balance);
    
	public void addInterest();
	
	public float getInterestRate();
	
	public boolean deposit(float amount);

	public boolean withdraw(float amount);

	public <T extends BaseAccount, E extends Transaction> void addBaseObserver(BaseObserver<T,E> bo);
	
	public void addTransaction(IEntry tr);
	
	public void setCustomer(ICustomer cust);
	
	public ICustomer getCustomer();
	
	public void report();

}
